import java.io.*;
import java.net.*;
import java.util.*;

class GestorCliente extends Thread
{
	Socket socket;
	BufferedReader entrada;
	boolean continuar;
	Escenario escenario;

	public GestorCliente(Socket socket)
	{
		this.socket = socket;
		this.entrada = null;
		continuar = true;
	}

	public void run()
	{
		try
		{
			entrada = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));

			while (continuar)
			{
				String cadena = entrada.readLine();
				if (cadena == null || cadena == "<salir>true</salir>")
				{
					entrada.close();
					continuar = false;
				}
				else
				{
					//System.out.print("> ");
					procesarCadena(cadena);
				}
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}

	void procesarCadena(String cadena)
	{
		XmlCliente xml = new XmlCliente(cadena);
		comandosEnum comando = xml.identificarXml();
		switch (comando)
		{
			case MENSAJE:
				System.out.println(xml.mensajeChat());
				break;
			case RESULTADO:
				HashMap<String,String> hm;
				hm = xml.resultado();
				String cmd = hm.get("comando");
				String val = hm.get("valor");

				if (cmd.equals("conectar_partida") && val.equals("true"))
				{
					escenario = new Escenario(socket);
					escenario.crear();
				}else
				if (cmd.equals("crear_partida") && val.equals("true"))
				{
					escenario = new Escenario(socket);
					escenario.crear();
				}
				break;
			case ESTADO_DE_PARTIDA:	
				escenario.refrescarPantalla(xml);
				break;
			case DESCONOCIDO:
		}
	}
}
